package com.shrcl.engineerprocess.domain;

import com.shrcl.engineerprocess.domain.EngineerPlanEffort;
import com.shrcl.engineerprocess.domain.EngineerProject;
import com.shrcl.engineerprocess.domain.impl.EngineerProjectPlanImpl;
import com.shrcl.engineerprocess.domain.proxy.EngineerProjectPlanProxy;
import edu.fudan.mylang.pf.EntityImplementation;
import edu.fudan.mylang.pf.IModelObject;
import java.util.Collection;
import java.util.Date;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;

@EntityImplementation(implementBy = EngineerProjectPlanImpl.class)
public interface EngineerProjectPlan extends IModelObject {
  public abstract EngineerProject getEngineerProject();
  
  public abstract EngineerProjectPlan setEngineerProject(final EngineerProject engineerProject);
  
  public abstract Date getStartDate();
  
  public abstract EngineerProjectPlan setStartDate(final Date startDate);
  
  public abstract Date getStartTime();
  
  public abstract EngineerProjectPlan setStartTime(final Date startTime);
  
  public abstract Date getEndDate();
  
  public abstract EngineerProjectPlan setEndDate(final Date endDate);
  
  public abstract Date getEndTime();
  
  public abstract EngineerProjectPlan setEndTime(final Date endTime);
  
  public abstract String getWorkName();
  
  public abstract EngineerProjectPlan setWorkName(final String workName);
  
  public abstract Collection<EngineerPlanEffort> getEfforts();
  
  public abstract EngineerPlanEffort createAndAddtoEfforts();
  
  public abstract EngineerPlanEffort createAndAddtoEfforts(final Procedure1<EngineerPlanEffort> updater);
  
  public abstract EngineerProjectPlan removeFromEfforts(final EngineerPlanEffort engineerPlanEffort);
  
  public abstract EngineerProjectPlan removeAllEfforts();
  
  public abstract EngineerProjectPlanProxy toProxy();
}
